STM32LL库系列教程(二)

您所在的位置:网站首页 stm32 ll STM32LL库系列教程(二)

STM32LL库系列教程(二)

#STM32LL库系列教程(二)| 来源: 网络整理| 查看: 265

**开发平台** : 正点原子 探索者STM32F407ZET6 cube mx:V 5.1.0 keil uVision5

项目地址:https://github.com/liliang1918/STM32LL

注意: 本教程默认读者已经对stm32和cubemx软件有一定了解; 为节省篇幅,详细配置cubemx的步骤仅在此篇中说明,以后仅会简略介绍配置相关内容。 STM32LL库系列教程(二)——点亮LED灯 实验目的:学习cubemx LL库的配置方法;学会操作GPIO相关寄存器BSRR、ODR 实验现象:LED1每秒翻转一次;LED2每0.5秒翻转一次

文章目录 1. 配置cubemx1.1 配置时钟1.2 配置GPIO1.3 工程配置 2. 编写代码3.相关寄存器介绍3.1 GPIO 端口置位/复位寄存器 (GPIOx_BSRR) (x = A..I)3.2 GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..I) 下面开始配置cubemx,来进行程序的初始化。

1. 配置cubemx 1.1 配置时钟

RCC——HSE——Crystal/Ceramic Resonator(晶体/陶瓷谐振器)选择外部晶振

在这里插入图片描述 Clock Configuration——晶振频率选8M,与开发板相对应,主频开到最大168M

在这里插入图片描述

1.2 配置GPIO

板子上的LED为PF9、PF10控制,选择GPIO_Output 在这里插入图片描述

1.3 工程配置

1.3.1 选择keil 在这里插入图片描述 1.3.2 优化工程选项 在这里插入图片描述 1.3.3

*******重点:cubemx默认生成的是hal库的工程,必须在这里修改才能使用LL库 *******有趣的是hal库和ll库是可以相互兼容的,可以单独给某个外设配置ll库或hal库

在这里插入图片描述

自此,对本工程的初始化就完成了。 下面开始编写代码,并介绍控制GPIO相关寄存器

2. 编写代码

代码很简单 在while(1)中自行添加这样几行 在这里插入图片描述 从名字中,不难看出这几行代码的作用,而在LL库本身的库文件中也有介绍他的作用: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 因而,想对LL库得心应手,就必须要经常看一看库文件以及参考手册。 回到上文,在这三个函数中,我们发现LL库,基本上都是通过static inline内联函数来操作寄存器,这样代码的效率可想而知。那BSRR和ODR是什么呢,让我们翻一下STM32F4xx中文参考手册

3.相关寄存器介绍 3.1 GPIO 端口置位/复位寄存器 (GPIOx_BSRR) (x = A…I) 首先是`BSRR` S、R顾名思义,即置位,复位。 因此,对R写1,就是复位,该GPIO会输出0; 对S写1,就是置位,输出高电平,而且,S优先级更高。 所以,对这个寄存器写数,就会改变GPIO的状态,从而,灯会闪烁。

在这里插入图片描述

3.2 GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A…I)

下面是ODR,这同样也是一个可以通过写入来改变GPIO状态的寄存器, 与BSRR比较大的区别就是,它可以直接对一位写0或1,控制输出;且,ODR的数是可以读出来的。 因此在函数LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask); 是先读取ODR的值,确定输出状态,然后再取反,实现了每次输出会翻转的现象。 在这里插入图片描述

**感谢观看!**


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3